#ifndef COMPARATOR_H_INCLUDED
#define COMPARATOR_H_INCLUDED

enum CompType
{
    SMALLER = 0,
    SMALLEROREQUAL = 1,
    GREATER = 2,
    GREATEROREQUAL = 3,
    EQUAL = 4
};

class Comparator
{
public:
    Comparator(bool (*smaller) (char*, char*), bool (*smallerOE) (char*, char*), bool (*greater) (char*, char*), bool (*greaterOE) (char*, char*), bool (*equal) (char*, char*));
    Comparator(const Comparator& other);

    ~Comparator() {}

    Comparator operator=(const Comparator& other) = delete;

    bool operator()(CompType type, char* one, char* other);

private:
    bool (*smaller)     (char*, char*);
    bool (*smallerOE)   (char*, char*);
    bool (*greater)     (char*, char*);
    bool (*greaterOE)   (char*, char*);
    bool (*equal)       (char*, char*);
};

#endif // COMPARATOR_H_INCLUDED
